//observable用于创建一个被检测的对象，对象的属性就是应用的状态
//actions 用于定义actions方法，action方法 用于修改 更新状态
import {
  observable,
  action,
  configure,toJS
} from "mobx-miniprogram"
configure({
  useProxies: "never"
})
export const numStore = observable({
  num1: 10,
  num2: 20,

  update: action(function () {
    this.num1 += 1
    this.num2 += 1
  }),

  //计算属性必须要用get 修饰 并有返回值
  get sum() {
    return this.num1 + this.num2
  }
})
//计算选择额数据
export const selectedMaterial = observable({
  selectedList: [],
  update: action(function (data) {
   console.log(data);
    this.selectedList = this.selectedList.concat(data)
    console.log("------------->",toJS(this.selectedList));
   return  this.mergeDuplicateStock(toJS(this.selectedList))
  }),
  mergeDuplicateStock(arr) {
    const map = new Map();
    
    arr.forEach(item => {
      const key = item.materialId; 
      if (map.has(key)) {
        // 合并相同对象：累加 stock
        const existing = map.get(key);
        existing.materialNum += item.materialNum;
      } else {
        // 存储新对象（浅拷贝避免修改原对象）
        map.set(key, { ...item });
      }
    });
    return Array.from(map.values());
  }

})